"""
正则表达式_使用元字符进行匹配
"""

import re

my_str = "!aaabbbcccdd %% ## 123456 Java _ -"

# 字符串r标记，表示字符串中转义字符无效，就是普通字符
# \d：匹配数字
result_list: list = re.findall(r"\d", my_str)
print(result_list)

# \W：匹配特殊字符，非单词字符（单词字符为：a-z、A-Z、0-9、_）
result_w_list = re.findall(r"\W", my_str)
print(result_w_list)

# 匹配所有的英文字母
result_en_list = re.findall(r"[a-zA-Z]", my_str)
print(result_en_list)

# 匹配3-6数字
result_num_list = re.findall(r"[3-6]", my_str)
print(result_num_list)

# -----------------------实际应用------------------------------ #

# 1.匹配账号，只能由数字和字母组成，且长度限制为6-10位
r = "^[a-zA-Z0-9]{6,10}$"
s = "12345678"
print(re.findall(r, s))

# 2.匹配qq账号，要求纯数字，长度5-11，第一位不为0 
r = "^[1-9][0-9]{4,10}$ "
s = "012345678"
print(re.findall(r, s))

# 3.匹配邮箱地址，只允许qq、163、gmail三种邮箱地址
# {内容}.{内容}@{内容}.{内容} abc.egf.kml@163.c.d.com
r = r"^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$"
s = "a.b.c.d.e.f@163.c.d.f.com"
print(re.match(r, s))
